/**
 * Carlos Andre Aguilar Flores
 * Francisco Javier Gómez Xet
 * Josue Barrientos
 * Antonio Navas
 */
package hojadetrabajo1;

// Clase que implementa la interfaz iRadio
public class Radio implements iRadio{
    
    /* Creates new form RadioA */
    
    /*Inicializacion de variables*/
    private float frecuencia=530;
    private boolean encendido=false, signal=true;
    private float[] Tune = new float[12];
    private float[] Tune2 = new float[12];
    
     /** 
     * Descripcion: Metodo utilizado para poder encender o apagar la radio.
     * Nombre: Power
     * Parametros: 
     * Valor que retorna: encendido
     * Pre-condiciones: 
     * Post-condiciones:
     */
    @Override
    public boolean Power(){
        if (encendido==true){
            encendido=false;
        }
        else {
            encendido=true;
        }
        return encendido;
    }
    @Override
    /** 
     * Descripcion: Metodo utilizado para poder controlar el cambio de frecuencia
     * entre AM y FM. Se controla por medio de una variable booleana.
     * Nombre: ChangeSignal
     * Parametros: 
     * Valor que retorna: signal
     * Pre-condiciones: 
     * Post-condiciones:
     */
    /* */
    public boolean ChangeSignal(){
        if (signal==true){
            signal=false;
            frecuencia=(float)87.9;
        }
        else {
            signal=true;
            frecuencia=530;
        }
        return signal;
    }
    @Override
    /** 
     * Descripcion: Metodo utilizado para cambiar de frecuencia, se verifica en que 
     * tipo de banda esta, para realizar los cambios de 0.2(fm) o 10(am).
     * Nombre: NextFreq()
     * Parametros: 
     * Valor que retorna: frecuencia
     * Pre-condiciones: 
     * Post-condiciones: 
     */

    public float NextFreq(){
        if (signal==false){
            if (frecuencia>107.9){
                frecuencia=(float) 87.9;
            }
            else{
                frecuencia+=0.2;
            }
        }
        else{
            if (frecuencia>1610){
                frecuencia=530;
            }
            else{
                frecuencia+=10;
            }
        }
        return frecuencia;
    }
    /** 
     * Descripcion: Metodo que sirve para guardar la frecuencia actual en el 
     * lugar de
     * memoria indicado. Se verifica en que banda se encuentra.
     * Nombre: SaveFreq
     * Parametros: boton
     * Valor que retorna: 
     * Pre-condiciones:
     * Post-condiciones:
     */
    @Override
    public boolean SaveFreq(int boton){
      if (encendido){
        if (signal==false){
            Tune[boton]=frecuencia;
        }
        else {
            Tune2[boton]=frecuencia;
        }
        return true;
      }
      else { 
        return false;
      }
        
    }
    @Override
    /** 
     * Descripcion: Metodo para cambiar de banda, tambien se coloca en el label la 
     * frecuencia apropiada.
     * Nombre: ChangeTune 
     * Parametros: boton
     * Valor que retorna: frecuencia
     * Pre-condiciones:
     * Post-condiciones:
     */

    public float ChangeTune(int boton){
        if (signal==false){
            frecuencia=Tune[boton];
        }
        else {
            frecuencia=Tune2[boton];
        }
        return frecuencia;
    }
    @Override
    /** 
     * Descripcion: Metodo que retorna el estado actual del radio. Encendido o apagado
     * esto por medio de una variable booleana
     * Nombre: IsOn
     * Parametros: 
     * Valor que retorna: encendido
     * Pre-condiciones:
     * Post-condiciones:
     */
    public boolean IsOn(){
        return encendido;
    }
    @Override
    /** 
     * Descripcion: Metedo que retorna la banda utilizada en ese momento, es decir AM o FM
     * esto por medio de una variable booleana
     * Nombre: IsAm
     * Parametros: 
     * Valor que retorna: signal
     * Pre-condiciones:
     * Post-condiciones:
     */
    public boolean IsAm(){
        return signal;
    }
    @Override
    /** 
     * Descripcion: Metodo que retorna la frecuencia en la que se encuentra, ya sea AM o FM
     * Nombre: GetFreq
     * Parametros: 
     * Valor que retorna: frecuencia
     * Pre-condiciones:
     * Post-condiciones:
     */
    public float GetFreq(){
        return frecuencia;
    }
}
